package javaapplication3;
import java.util.*;
import java.io.*;


public class Main 
{
    public static long cr;
	public static boolean alog[];
    public static void main(String[] args)  throws IOException 
    {
        File outputFile = new File("casosDPBueno.out");
        File inputFile= new File("casosBueno.in");
        FileReader inf = new FileReader(inputFile);
        FileWriter out = new FileWriter(outputFile);
        BufferedWriter salida = new BufferedWriter(out);
        BufferedReader entr= new BufferedReader(inf);
        String h;
        h=entr.readLine();
        try
        {
            while (h!=null) //mientras no termine el archivo
            {
                int j= Integer.valueOf(h);
                Tupla moda;
                System.out.println("El prim leido: "+h.toString());
                h=entr.readLine();
                int indice;
                int[] arreglo=new int[j];
                int k=0;
                while (j-1>0)
                {
                    indice=h.indexOf(" ");
                    arreglo[k]=Integer.valueOf(h.substring(0, indice));
                    h=h.substring(indice+1, h.length());
                    j--;
                    k++;
                }
                arreglo[k]=Integer.valueOf((h.substring(0, h.length())).trim());
                h=entr.readLine();
                moda=obtieneModa(arreglo, arreglo.length, 0, arreglo.length-1, 0);
                salida.write(String.valueOf(moda.getX()));
                salida.newLine();
                salida.flush();
            }
        }
        finally
        {
            salida.close();
            entr.close();
        }
    }
    public static Tupla obtieneModa(int[] a,int n, int desde, int hasta, int nivel)
    {
        if (n==1) 
        {
            Tupla res=new Tupla(a[desde], 1);
            return res;
        }
        else
        {
            Tupla m1=obtieneModa2(a, n/2, desde, desde+(n/2)-1, nivel+1);
            if (!alog[nivel])
            {
                cr++;
                alog[nivel]=true;
            }
            Tupla m2=obtieneModa2(a, n-(n/2), desde+(n/2), hasta, nivel+1);
            if (m1.getX()==m2.getX())
            {
                Tupla res=new Tupla(m1.getX(), m1.getY()+m2.getY());
                return res;
            }
            else
            {
                if (m1.getX()!=-1 && m2.getX()!=-1)
                {
                    if (m1.getY()>m2.getY())
                    {
                        Tupla res=new Tupla(m1.getX(), m1.getY()-m2.getY());
                        return res;
                    }
                    else
                    {
                        if (m1.getY()<m2.getY())
                        {
                            Tupla res=new Tupla(m2.getX(), m2.getY()-m1.getY());
                            return res;
                        }
                        else
                        {
                            Tupla res=new Tupla(-1, 0);
                            return res;
                        }
                    }
                    
                }
                else
                {
                    if (m1.getX()==-1 && m2.getX()==-1)
                    {
                            Tupla res=new Tupla(-1, 0);
                            return res;
                    }
                    else
                    {
                        if (m1.getX()==-1)
                        {
                            Tupla res=new Tupla(m2.getX(), m2.getY());
                            return res;
                        }
                        else 
                        {
                            Tupla res=new Tupla(m1.getX(), m1.getY());
                            return res;
                        }
                    }
                }
            }
        }
    }
}
